abstract techniques